import request from '@/utils/request'
import type {
  CheckinRecord,
  QRCodeCheckinRequest,
  LocationCheckinRequest,
  CheckinRecordListResponse,
  CheckinStatistics
} from '@/types/api/checkin'
import type { BaseResponse, PaginationResponse } from '@/types/common/response'

/**
 * 签到打卡管理相关API
 */
export const checkinApi = {
  /**
   * 获取签到记录列表
   * @param params 查询参数
   */
  getCheckinRecordList(params: { page: number; pageSize: number; keyword?: string; date?: string }) {
    return request.get<BaseResponse<PaginationResponse<CheckinRecord>>>('/checkin-records', { params })
  },

  /**
   * 获取签到记录详情
   * @param id 签到记录ID
   */
  getCheckinRecordDetail(id: number) {
    return request.get<BaseResponse<CheckinRecord>>(`/checkin-records/${id}`)
  },

  /**
   * 二维码签到
   * @param data 签到信息
   */
  qrCodeCheckin(data: QRCodeCheckinRequest) {
    return request.post<BaseResponse<null>>('/checkin/qr-code', data)
  },

  /**
   * 地理位置签到
   * @param data 签到信息
   */
  locationCheckin(data: LocationCheckinRequest) {
    return request.post<BaseResponse<null>>('/checkin/location', data)
  },

  /**
   * 获取签到统计信息
   * @param params 查询参数
   */
  getCheckinStatistics(params: { startDate?: string; endDate?: string }) {
    return request.get<BaseResponse<CheckinStatistics>>('/checkin-statistics', { params })
  },

  /**
   * 导出签到记录
   * @param params 查询参数
   */
  exportCheckinRecords(params: { startDate?: string; endDate?: string }) {
    return request.get<BaseResponse<string>>('/checkin-records/export', { params })
  }
}
